<?php
declare(strict_types=1);

namespace SixShop\News;

use SixShop\Core\ExtensionAbstract;
use SixShop\News\Hook\NewsHook;
use think\facade\Db;

class Extension extends ExtensionAbstract
{
    /**
     * 安装扩展
     * 执行数据库迁移，创建必要的表结构
     */
    public function install(): void
    {
        // 执行安装SQL脚本
        $sqlFile = $this->getBaseDir() . '/config/install.sql';
        if (file_exists($sqlFile)) {
            $sql = file_get_contents($sqlFile);
            $statements = array_filter(array_map('trim', explode(';', $sql)));

            foreach ($statements as $statement) {
                if (!empty($statement)) {
                    Db::execute($statement);
                }
            }
        }

        // 可以在这里添加其他安装逻辑
        // 例如：创建默认配置、初始化数据等
    }

    protected function getBaseDir(): string
    {
        return dirname(__DIR__);
    }

    /**
     * 卸载扩展
     * 清理数据库表和其他资源
     */
    public function uninstall(): void
    {
        // 执行卸载SQL脚本
        $sqlFile = $this->getBaseDir() . '/config/uninstall.sql';
        if (file_exists($sqlFile)) {
            $sql = file_get_contents($sqlFile);
            $statements = array_filter(array_map('trim', explode(';', $sql)));

            foreach ($statements as $statement) {
                if (!empty($statement)) {
                    Db::execute($statement);
                }
            }
        }

        // 可以在这里添加其他卸载逻辑
        // 例如：清理缓存、删除上传的文件等
    }

    public function getHooks(): array
    {
        return [
            NewsHook::class,
        ];
    }
}